package leetcode.listnode;

import leetcode.ListNode;

import java.util.List;

/**
 * @author Cheng Jun
 * Description: 给定一个已排序的链表的头 head ， 删除原始链表中所有重复数字的节点，只留下不同的数字 。返回 已排序的链表 。
 * https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/
 * @version 1.0
 * @date 2022/7/26 21:39
 */
public class deleteDuplicates2 {

    /**
     * 当前节点的 下一个节点 和 下一个节点的节点 比较
     * @author Cheng Jun
     * @date 2022/7/26 21:46
     * @param head
     * @return leetcode.ListNode
     */
    public ListNode deleteDuplicates(ListNode head) {
        if(head == null) return  head;
        ListNode dummy = new ListNode(Integer.MAX_VALUE, head);
        ListNode curNode = dummy;
        // 比较后两个节点的值
        while (curNode.next != null && curNode.next.next != null){
            // 如果出现节点值 相同的情况
            if(curNode.next.val == curNode.next.next.val){
                int sameNum = curNode.next.val;
                // 依次移除
                while (curNode.next !=null && curNode.next.val == sameNum){
                    curNode.next = curNode.next.next;
                }
            }else {
                curNode = curNode.next;
            }
        }
        return dummy.next;
    }
}
